﻿using LY.Manage.IDAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LY.Manage.IBLL
{
    public interface IBaseService<T>    where T:class,new()
    {

        IDBSession CurrentDbSession { get; }
        IDAL.IBaseDal<T> CurrentDal { get; set; }
        IQueryable<T> LoadEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLambda);

        IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount, System.Linq.Expressions.Expression<Func<T, bool>> whereLambda, System.Linq.Expressions.Expression<Func<T, s>> orderLambda, bool isAsc);

        bool DeleteEntity(T entity);

        bool UpdateEntity(T entity);

        T AddEntity(T entity);

    }
}
